package gui;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JButton;

import negocio.Cursada;
import negocio.CursadaControlador;
import negocio.Curso;
import negocio.CursoControlador;
import negocio.Usuario;
import negocio.UsuarioControlador;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Date;
import java.util.ArrayList;

import com.toedter.calendar.JDateChooser;

public class CursadasCrear extends JFrame {

	private JPanel contentPane;
	private JTextField textFieldVacantes;
	private JTextField textFieldCupo;
	private JTextField textFieldHorasTotales;
	private JDateChooser dateChooserFechaInicio;
	private JComboBox<Curso> comboBoxCurso;
	private JComboBox<Usuario> comboBoxInstructores; 
	private Cursada cursada;
	private Cursadas padre;

	/**
	 * Launch the application.
	 */
	/*public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CursadasCrear frame = new CursadasCrear();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public CursadasCrear(Cursadas padre) 
	{
		setTitle("Crear Cursada");
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				padre.nullCursadasCrear();
				dispose();
			}
		});
		this.padre = padre;
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 561, 156);
		contentPane = new JPanel();
		this.setTitle("Crear cursadas");
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel label = new JLabel("Curso");
		label.setBounds(10, 11, 46, 14);
		contentPane.add(label);
		
		JLabel lblCantidadDeHoras = new JLabel("Cantidad de horas");
		lblCantidadDeHoras.setBounds(10, 36, 97, 14);
		contentPane.add(lblCantidadDeHoras);
		
		JLabel lblFechaDeInicio = new JLabel("Fecha de inicio");
		lblFechaDeInicio.setBounds(10, 61, 97, 14);
		contentPane.add(lblFechaDeInicio);
		
		comboBoxCurso = new JComboBox<Curso>();
		comboBoxCurso.setBounds(117, 8, 147, 20);
		contentPane.add(comboBoxCurso);
		llenarComboCursos();
		
		JLabel lblCantidadDeVacantes = new JLabel("Cantidad de vacantes");
		lblCantidadDeVacantes.setBounds(309, 36, 130, 14);
		contentPane.add(lblCantidadDeVacantes);
		
		JLabel lblCupoMinimo = new JLabel("Cupo minimo");
		lblCupoMinimo.setBounds(309, 61, 111, 14);
		contentPane.add(lblCupoMinimo);
		
		textFieldVacantes = new JTextField();
		textFieldVacantes.setBounds(449, 33, 86, 20);
		contentPane.add(textFieldVacantes);
		textFieldVacantes.setColumns(10);
		
		textFieldCupo = new JTextField();
		textFieldCupo.setBounds(449, 58, 86, 20);
		contentPane.add(textFieldCupo);
		textFieldCupo.setColumns(10);
		
		comboBoxInstructores = new JComboBox<Usuario>();
		comboBoxInstructores.setBounds(449, 8, 86, 20);
		contentPane.add(comboBoxInstructores);
		llenarComboInstructores();
		
		JLabel lblInstructor = new JLabel("Instructor");
		lblInstructor.setBounds(309, 11, 86, 14);
		contentPane.add(lblInstructor);
		
		DefaultTableModel modeloClases = new DefaultTableModel();
		Object[] encabezado= {"Fecha","Hora inicio","Hora fin","Aula"};
		modeloClases.setColumnIdentifiers(encabezado);
		
		JButton btnCrearCursada = new JButton("Crear cursada");
		btnCrearCursada.addActionListener(new ActionListener() {
			@SuppressWarnings("deprecation")
			public void actionPerformed(ActionEvent arg0) 
			{
				Curso curso = (Curso)comboBoxCurso.getSelectedItem();
				Usuario inst= (Usuario)comboBoxInstructores.getSelectedItem();
				Date fechaInicio = new Date(dateChooserFechaInicio.getDate().getYear(),dateChooserFechaInicio.getDate().getMonth(),dateChooserFechaInicio.getDate().getDate());
				int vacantes = Integer.parseInt(textFieldVacantes.getText());
				int cupo = Integer.parseInt(textFieldCupo.getText());
				int horas = Integer.parseInt(textFieldHorasTotales.getText());
				cursada = new Cursada(curso, fechaInicio, vacantes, cupo, inst, "Abierta la inscripcion", horas);
				CursadaControlador.guardar(cursada);
				padre.llenarTabla();
				dispose();
			}
		});
		btnCrearCursada.setBounds(275, 86, 120, 23);
		contentPane.add(btnCrearCursada);
		
		JButton button = new JButton("Cancelar");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				padre.nullCursadasCrear();
				dispose();
			}
		});
		button.setBounds(415, 86, 120, 23);
		contentPane.add(button);
		
		dateChooserFechaInicio = new JDateChooser();
		dateChooserFechaInicio.setBounds(117, 55, 147, 20);
		contentPane.add(dateChooserFechaInicio);		
		
		textFieldHorasTotales = new JTextField();
		textFieldHorasTotales.setBounds(117, 34, 147, 17);
		contentPane.add(textFieldHorasTotales);
		textFieldHorasTotales.setColumns(10);
	}
	
	public void llenarComboCursos()
	{
		ArrayList<Curso> cursos = CursoControlador.getAll();
		for(Curso c : cursos)
		{
			comboBoxCurso.addItem(c);
		}
	}
	
	public void llenarComboInstructores()
	{
		ArrayList<Usuario> instructores = UsuarioControlador.getInstructores();
		for(Usuario c : instructores)
		{
			comboBoxInstructores.addItem(c);
		}
	}
}
